package com.future;

/**
 * Description:
 * 给定一个非负整数c，你要判断是否存在两个整数 a 和 b，使得a^2 + b^2 = c 。
 * <p>
 * 示例 1：
 * <p>
 * 输入：c = 5
 * 输出：true
 * 解释：1 * 1 + 2 * 2 = 5
 * 示例 2：
 * <p>
 * 输入：c = 3
 * 输出：false
 * 示例 3：
 * <p>
 * 输入：c = 4
 * 输出：true
 * 示例 4：
 * <p>
 * 输入：c = 2
 * 输出：true
 * 示例 5：
 * <p>
 * 输入：c = 1
 * 输出：true
 * <p>
 * 提示：
 * <p>
 * 0 <= c <= 231 - 1
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/sum-of-square-numbers
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * @author weiruibai.vendor
 * Date: 2021/11/4 11:05
 */
public class Solution_judgeSquareSum_633 {

    public static void main(String[] args) {

        System.out.println(judgeSquareSum(5));
        System.out.println(judgeSquareSum(25));
        System.out.println(judgeSquareSum(20));
        System.out.println(judgeSquareSum(19));
        System.out.println(judgeSquareSum(2));
    }

    /**
     * 暴力解法
     *
     * @param c
     * @return
     */
    public static boolean judgeSquareSum(int c) {
        // 求c的平方根
        int sqrt = (int) Math.sqrt(c);
        double tmp = 0;
        for (int i = 0; i <= sqrt; i++) {
            tmp = Math.sqrt(c - i * i);
            if (tmp == (int) tmp) {
                return true;
            }
        }
        return false;
    }
}
